Operational notes Engineering

SINFI 4.0: is the data you already filed still compliant?

7 min read

A weathered wooden marker post carrying two hand-painted numbers, half buried in dry grass, in black and white
The code stays painted where it was. It is the register behind it that has changed meaning.

The archive you filed with Italy’s national utility-network register passed the validator and was accepted. Since July, two of the codes it holds no longer exist in the domain that allowed them, and a column most people had left empty has become mandatory minimum content. There is no announcement of version 4.0 on the register’s portal: the difference lives inside the documents.

What mandatory means in this specification

Cardinality does not say it. A single letter does. The introduction to version 4.0 is explicit: «i costrutti discriminati dalla lettera “P”, rappresentano contenuti informativi minimi, quindi obbligatori per l’implementazione del SINFI» — constructs marked with the letter P are minimum informative content, hence mandatory; those without it are optional.

Take attribute 07030203 ND_ELE_UTE, type of customer connected, on electricity-network nodes. In version 3.1.2 the row carries cardinality [0..*] and no P. In 4.0 it carries the same [0..*] and the P. Anyone who compared the two releases by cardinality concluded that nothing had changed. What changed is the right-hand column. In our note on network nodes we flagged that the announced obligation did not square with the printed [0..*]. The adopted text settles it: the obligation sits in the P, and governs minimum population, not values per instance.

Two codes your archive contains and the domain no longer allows

Attribute 07030114 TR_ELE_TY, the type of an electricity-network line segment, had six entries in version 3.1.2: 01 high voltage, 02 medium, 03 low, 04 «tratta destinata all’illuminazione pubblica» (public lighting), 05 «tratta destinata alla semaforizzazione e similari» (traffic signals and similar), 95 other. Version 4.0 has four: 01, 02, 03, 95.

Anyone who coded a lighting feeder as 04 now holds a value the current domain does not recognise. The information has not vanished from the model: it has moved onto the node, into the customer-type domain, at values 0701 — printed in the adopted document as «illuminazione pubblicaf», a typo — and 0702 «semafori».

Moving information from the line to the node is not a rename. A feeder is one record, the points it serves are many, and no lookup table derives the second from the first. That is a survey, not a transcoding job.

Meanwhile the node type attribute, ND_ELE_TY, still carries 02 «punto luce» (lighting point) and 04 «semaforo - cartello stradale o similare»: the accompanying report proposed removing those duplications, the adopted specification kept them. The same street lamp remains describable in two places, and whoever fills in the form decides which.

The domain does not belong to the electricity network

The accompanying report presents the customer tree under the electricity class, and that is where the eye stops. Customer type is not an attribute: it is domain 1000, and it is shared. In version 4.0 seven node classes reference it — water supply, wastewater, electricity, gas, district heating, oil pipelines and telecommunications: ND_AAC_UTE, ND_SAC_UTE, ND_ELE_UTE, ND_GAS_UTE, ND_TLR_UTE, ND_OLE_UTE, ND_COM_UTE.

Only the electricity one gained the P. The other six stay optional — but the domain underneath all of them has been rewritten. Telecommunications nodes included: anyone who populated ND_COM_UTE out of diligence, when nobody was asking for it, now has a field to revisit precisely because they filled it in.

And the rewrite is deep: from six rows to thirty-two. 01 domestic with three entries, 02 industrial split by company size band, 03 agricultural with seven, 06 public buildings with six, 07 urban services with six — lighting, traffic signals, EV charging points, video surveillance, sensors and IoT devices.

Two entries of the old domain are missing from the new one: 04 «mista» (mixed) and 05 «antincendio» (fire-fighting). The report of modifications lists both among the proposed values; the adopted specification does not contain them. For mixed a reading exists: [0..*] lets you list the actual customer types, so the mixed case expresses itself. For fire-fighting the new tree holds no equivalent at any level. Whoever tagged a fire-protection supply that way now chooses between 95 «altro» and losing the distinction.

The target has moved, the published yardstick has not

Filed data is not judged by a person reading it, but by a program. On the SINFI portal — the MIMIT platform coordinated by the Department for Digital Transformation and operated by Infratel Italia — the page on the validation process states that the instrument is the GeoUML Validator (CISIS and Politecnico di Milano), which checks a dataset against a reference specification for conformity that is «geometrica, topologica e di database», and returns a report grouping errors into six families: missing structures; absence and compatibility of attributes; metric checks; cardinality and uniqueness; foreign-key constraints; GeoUML constraints.

In the documentation section, the published package is «SCS versione 3.1.2», described as «Specifica 3.1.2 su la quale si effettua la validazione dei dati» — the specification data is validated against. Beside it sit the physical model Mapping shape flat 3.1.2, a QGIS project with the empty 3.1.2 shapefiles, and the portable validator v3.1.2. The page records 13 March 2025 as its last update.

So, today: adopted specification 4.0, published validation package 3.1.2. That is a window, and it closes. It is the only moment in which an archive can be aligned without a rejected upload in the middle — the more so because, says the portal, «La validazione dell’operatore diverrà, come previsto dal decreto, obbligatoria» (operator validation will become mandatory).

What to do before it closes

  1. Inventory the values used, not the fields foreseen. A SELECT DISTINCT over TR_ELE_TY and the seven *_UTE attributes, with a record count per value. How many 04s and 05s you hold is a number, not an impression.
  2. Write the conversion rule for every code that has gone, dated and signed. Where no equivalent exists — fire-fighting — record the loss instead of letting it disappear into 95.
  3. Treat lighting and traffic signals as a survey, not as transcoding: the information has to reach the nodes, and where node-level data does not exist it must be collected in the field, at what that costs.
  4. Freeze the version. Every delivery must state which specification version produced it and which SCS validated it. Without that, in two years nobody will know whether an 04 is an error or simply an old archive.

What we do not know

We do not know when the validation package will move to 4.0: there is no date on the portal, and the news archive, from November 2023 to today, does not announce the new version. We do not know whether the absence of mixed and fire-fighting from the adopted domain is a decision or a slip; the same goes for «illuminazione pubblicaf». AgID publishes dedicated notices of typographical errors for its specifications; none appears among the technical rules for version 4.0. We have not run the validator against a dataset holding the vanished codes: which of the six families catches them, and whether as errors or as exceptions, is something to be measured. And the adopted specification carries no transitional provision and no deadline for aligning filed data.

The point.

A compliant archive is not compliant for ever: it is compliant with a version. Whoever files data into a register holds a second piece of data — the version of the yardstick that measured the first. That belongs in the tender specification as a clause: whoever produces the as-built states the specification version and the validation SCS, and hands over the report with the work, not six months later when the survey has to be redone. It is how we work: as-built documentation and filing set up as an export, not a campaign after the fact.

Then there is the other axis. Routes, measurements, as-builts and alarms stop being scattered files and become a single map of the network, where which records fail the current version is a query and not a month of work: on that map an AI runs the diagnosis and a crew closes the fault. Where it is needed, the AI runs inside the client’s perimeter — on-premise or dedicated cloud in Italy — together with CSIDIA, the other company in the group. Our own crews, no subcontracting.

Need to know how many records in your filing fail version 4.0? Talk to an engineer: it starts with the count, not the quote.

Sources