The Data Module Code (DMC)
Every data module needs a unique name. In S1000D that name is the Data Module Code (DMC). The DMC is a structured, machine-readable code. It is not random. Each part of the code tells you something about the data module: which product it belongs to, where in that product it applies, and what kind of information it holds. Because the code is structured, a tool can find, sort, and validate data modules without opening them. The DMC splits into two parts. The system-related part describes the object or equipment. The content-related part describes the type and meaning of the information.
DMC Decoder
Decode OKThe Standard Numbering System (SNS) is project-defined: the same numbers can mean different things on different programs. For example, an aircraft project might define 29-10-05 as Hydraulics → Main system → Tank. All DMCs shown here are illustrative values from the public S1000DBIKE sample data set.
The two parts of a DMC
A DMC is read left to right. The fields are joined by hyphens. The first group of fields is the system-related part. The last group is the content-related part.
| Part | Fields it contains | Question it answers |
|---|---|---|
| System-related | Model Identification Code, System Difference Code, SNS (System / Subsystem / Sub-subsystem / Assembly), Disassembly Code, Disassembly Code Variant | What hardware is this about, and where on it? |
| Content-related | Information Code, Information Code Variant, Item Location Code | What kind of information is this, and where is the task done? |
The s1kd-tools tutorial uses this example DMC for a fictional bicycle project:
BIKE-A-DA1-10-00-00B-720A-D
It reads as: model BIKE, system difference A, SNS DA1-10-00, disassembly code 00, disassembly variant B, information code 720 (install), information code variant A, item location D. In plain English: installation procedures for the brake pads. This is an illustrative example from the tutorial, not a real aircraft DMC.
The fields, one by one
The table below walks every field in order. Lengths and allowed values are set by the project's business rules, so treat the example values as illustrations.
| # | Field | What it identifies | Example |
|---|---|---|---|
| 1 | Model Identification Code (MIC) | The project or product the data module belongs to. For military and cross-organization projects the code is registered with NATO's Support and Procurement Agency (NSPA) so it stays unique. | 1B = Eurofighter; BIKE = the tutorial bike |
| 2 | System Difference Code | Separates alternative systems that would otherwise share the same SNS, for example the same subsystem from a different manufacturer. | A |
| 3 | SNS — System | The top level of the product breakdown (see the SNS page). | 29 = Hydraulics |
| 4 | SNS — Subsystem / Sub-subsystem | The next two levels down inside that system. | 29-10 = Main system |
| 5 | SNS — Assembly / Unit | The lowest SNS level: a sub-assembly or unit. | 29-10-05 = Tank |
| 6 | Disassembly Code | Extends the breakdown further, to identify the part of the assembly the data module is about. | 00 |
| 7 | Disassembly Code Variant | Marks a variant of that part, for example two brake pads that fit the same place but come from different makers. | A, B, C |
| 8 | Information Code (IC) | What kind of information this is (description, procedure, fault, install, and so on). See Information Codes. | 720 = assemble / install / connect |
| 9 | Information Code Variant | Distinguishes alternative procedures that reach the same result. | A |
| 10 | Item Location Code (ILC) | Where the task is performed, relative to the equipment. | A–D |
System-related fields in detail
The system-related part answers what hardware, and where on it.
- Model Identification Code (MIC) — A globally unique code for the project, two to fourteen uppercase letters and digits. Eurofighter, for example, uses
1B. The MIC keeps one project's data modules from colliding with another's; for projects whose data is shared between organizations it is registered with NATO's NSPA so two programs never claim the same code. - System Difference Code — A short code that separates designs which share the same numbering. Use it when two suppliers deliver the same subsystem, or when a later variant reuses an existing SNS.
- Standard Numbering System (SNS) — The heart of the system-related part. It places the data module in the product breakdown across four levels: system, subsystem, sub-subsystem, and assembly. The classic example is
29-10-05= Hydraulics → Main system → Tank. - Disassembly Code and Variant — These extend the breakdown below the SNS. The disassembly code identifies the specific item; the variant flags a physical difference between items that share the same location and function.
Content-related fields in detail
The content-related part answers what kind of information, and where the work happens.
- Information Code (IC) — A three-digit code for the purpose of the data module. The primary families are:
000description,100operation,200servicing,300examinations and tests,400fault reports and isolation,500disconnect and remove,600repairs,700assemble and install,800storage,900miscellaneous. - Information Code Variant — A single character that separates alternative procedures that achieve the same result, for example two valid ways to install the same part.
- Item Location Code (ILC) — A single character that says where the task is carried out:
| ILC | Meaning |
|---|---|
A | On components installed in the system |
B | On components installed in an assembly that has been removed from the system |
C | On components on the bench |
D | Applies to all three contexts above |
Because the DMC is built from fixed fields, a toolchain like s1kd-tools can answer questions by reading file names alone: show every install procedure (7xx) for the hydraulics system (29). No full-text search and no opening files. That is the point of source-once, structured data.
In a CSDB, the file name usually adds an issue number, an in-work number, and a language code after the DMC, for example ..._001-00_EN-US. Those extra fields track the version and language of the data module, not its identity. The DMC itself stays stable across issues.
How to read a DMC quickly
- Read the first field to learn the product (MIC).
- Read the SNS to learn where on the product it applies.
- Read the Information Code to learn what kind of content it is.
- The remaining fields refine the answer: differences, variants, and where the task is done.
Try it above: paste a DMC into the decoder, or use the presets, and watch each field expand into plain English.