Skip to main content
VeriFactu

What the Generate Access Export (art.15) button in VeriFactu does

The Generate Access Export (art.15) button of the DSAR Wizard searches the chosen company for the records and cancellations that match a NIF or a name, saves the result as a JSON file (the code also tries to save a PDF) and adds an event to the module's event log.

FlexigoTech · Editor in charge: Víctor Gómez · Updated 5 November 2026

Key facts

Module
VeriFactu
Versions
Odoo 17, 18, 19 and 20
Checked
in the module's source code, version 20.0 · against the sources linked at the end
Reading time
5 min

The case: an access request at an accountancy firm

Example Illustrative case: the company and its figures are made up to explain the flow.

Asesoría Ribera, an accountancy firm invented for this example, receives a request from a person who wants to know which of their data appear in a client's invoicing. The firm's privacy officer works in Odoo with VeriFactu España (AEAT RRSIF Compliance) and has to pull that information out of the module.

The button is in the 17, 18, 19 and 20 branches of the module, which is published on Odoo Apps for those four versions. What follows describes the Odoo 20.0 code.

Code-generated diagram, not an Odoo screen: the menu path to the DSAR Wizard and, below it, the Generate Access Export (art.15) button
Diagram generated from the module's code (labels in the English of the code): the menu and the button, which is in Odoo 17, 18, 19 and 20.

How she gets to the button

The form opens from Verifactu / SIF › Privacy / GDPR › DSAR Wizard. Each part of the menu asks for permissions, and if you lack one you do not see that part: Privacy / GDPR is visible to Privacy Officer and SIF Manager; Verifactu / SIF is also visible to Accountant, Asesoría Operator and Auditor (read-only).

Once on the form, the button does not depend on any view condition: it shows in all four versions. Her steps are these:

  1. Open the menu and go into the DSAR Wizard form. The fields of the request are in the Request Details group.
  2. Look at the Company field. By default it holds the active company, and the search runs only within the company shown there.
  3. Type the person's NIF or name in Data Subject NIF / Name.
  4. If the firm keeps a file number, put it in Request Reference.
  5. Click Generate Access Export (art.15).

The button's label changes with the language of Odoo. With Odoo in English it is the one above; with Odoo in Spanish, Generar Exportación de Acceso (art.15); with Odoo in Catalan, Generar Exportació d'Accés (art.15).

Code-generated diagram from the module's translations, not an Odoo screen: the text Generate Access Export (art.15) and its Spanish and Catalan versions
Diagram showing the button label according to the language of Odoo.

What the button does, in order

When clicked, the code does the following, one step after another:

  • It takes the text typed in Data Subject NIF / Name, strips the spaces from both ends and searches with it in the chosen company.
  • It builds the result, which holds the text you typed, the company name and two lists: the records and the cancellations found.
  • It saves that result as a JSON file in the wizard itself, named dsar_access_export_ followed by the first twenty characters of what you typed and the extension .json.
  • It also tries to produce a PDF (see below for what the code does if that fails).
  • It logs an event (next section).
  • It reopens the same wizard form in a pop-up window, on the same record.

The code describes this extraction as reading the personal-data fields without altering any record in the chain.

What it searches and what it exports

BlockWhere it searchesWhat data it pulls
RecordsThe counterparty's identifier or nameSerial number, issue date, name, identifier type, identifier and total
CancellationsOnly the counterparty's identifierSerial number, issue date and identifier

The match is "contains", case-insensitive. If Asesoría Ribera types only part of a name, every record of that company whose name or identifier contains that part comes in. And if it types a name, cancellations are not searched by it, only by identifier.

What gets logged

After producing the file, the button creates an event in the module's event log, for the chosen company. The event carries the date and time, the user who clicked, a description with the NIF or name typed, the NIF or name and the request reference as context (the reference is left empty if you did not fill it in), a fingerprint computed over that data and a sequence number specific to the company.

The request reference goes to that event; the JSON export file does not include it. And the order matters: if generating the file stops with an error, the code never gets to log the event.

Other actions that leave events

The button's event is not the only one logged this way. When you save a company's form, if the AEAT environment, the person responsible for the SIF or the VeriFactu scope has been changed, an event is also left. In addition, the standard button for cancelling an invoice, which the module extends, and the scheduled task Verifactu: Clock Drift Check, which runs every hour and is active on install, reach that same log. For what the module adds to invoices, see this article.

The PDF the code tries to save

As well as the JSON, the code tries to produce a PDF from the same wizard and, if it succeeds, saves it as dsar_access_export_ plus the first twenty characters of what you typed and the extension .pdf. If that step fails, the code catches the error, writes a warning to the server log and carries on with the JSON and the event.

What to take from the case

  • Confirm the Company field before clicking: the search is limited to it.
  • Type the full NIF when you have it; a partial name can bring back more records than expected, and cancellations only come up by identifier.
  • Fill in Request Reference if you want the event to carry it: the exported JSON does not include it.

How FlexigoTech can help

FlexigoTech implements Odoo 17, 18, 19 and 20 and builds custom connectors and integrations. If you want to review who should hold the permissions for the privacy menu, or adapt the module to your process, get in touch.

Keep reading

What VeriFactu España adds to the Odoo invoice and when it actsThe fields VeriFactu España adds to the Odoo invoice, when it creates the record on posting and how to check it has acted, step by step.«Only a SIF Manager can retry AEAT submissions.»: when it appears and what to doWhat the VeriFactu message «Only a SIF Manager can retry AEAT submissions.» means in Odoo: when it appears, which buttons trigger it and how to fix it.What the Generate Export button in VeriFactu España does in OdooWhat the Generate Export button in VeriFactu España for Odoo does: who can see it, what each export type produces and the event it logs.
Checked in the module's source code (version 20.0) and the linked sources

Sources