Update Annex AO/IC ATLAS-CMS
- Introduction
- Abbreviations
- Terminal Management System
- Compliance management
- Reporting
- Technical specifications
Introduction
- Commodity code;
- Customs status;
- Origin (preferential and non-preferential); and
- Reference numbers / cargo document data, among which customs documents.
Abbreviations
| AO/IC | Document describing the Administrative Organization and Measures of Internal Control, to which this document is an annex. |
| CGT | Customs and Global Trade. |
| CS | Customer Services team. |
| CMS | Compliance Management System. |
| CPM | Commercial Policy Measures |
| DMS | Customs Management System of the Dutch Customs authorities used for lodging customs declarations and messages. |
| EIDR | Entry Into the Declarants Records |
| NoP | Notification of Presentation message to present goods to Customs. |
| MAB | Notice Expiration of Payment Term. |
| OPS | Operations team. |
| SKU | Stock Keeping Unit |
| TMS | Terminal Management System. |
| TSD | Temporary Storage Declaration (i.e. practically the customs declaration done by the agent on behalf of our customers, prior to the goods arriving at our terminal). |
Terminal Management System
In this Chapter we focus on the role that our TMS - ATLAS plays in the process of governance. ATLAS is where data is received from in the CMS and where a User is informed on the outcome of the Customs processes.
Fundamentals
Overview
.png)
Core System Concepts
The system is based on a set of core concepts that together represent the physical and administrative handling of Product within terminal operations.
- Visit – Represents a Means of Transport (MOT) and its time of arrival. A single MOT may execute multiple Visits over time. Visits form the temporal and operational entry point for incoming or outgoing Product flows.
- Product – Represents the physical substance (molecules) being handled, such as bulk liquids. Product is the base physical entity on which all operational and administrative processes are applied.
- Storage Unit – Represents a physically segregated storage entity for Product. Storage Units ensure physical separation of Product and define how it is stored. Examples include:
- A Tank, which is a single Storage Unit;
- A Vessel, which may contain multiple segregated Storage Units;
- A Train, where wagons function as individual Storage Units;
- A Truck, where separate compartments can each represent distinct Storage Units containing different Products.
- Location – Defines where Activities are executed. Locations are relevant for operational control and for compliance with applicable licenses and regulatory requirements.
- Activity – Represents all operational actions performed on Product within the system. Activities include all forms of handling, transformation, movement, storage, or processing of Product across Visits, Storage Units, and Locations.
Together, these concepts form the foundational structure for representing physical flows and their administrative and compliance-related processing within the system.
Activities
For each Activity, whether a Movement or a Service, ATLAS provides information on all Products involved. In the case of Services, where no physical transfer of goods takes place between locations, the data relates to Parcel information within a Storage Unit (for example, a Tank or a Vessel). In the case of a Movement, at least two Storage Units are involved, and ATLAS provides Parcel data for all Products participating in the transfer between these Storage Units.
As further described under “Business Process”, the following list of Activities is used to support the record-keeping requirements from a customs compliance perspective:
- Movement;
- Services:
- Take in quantity;
- Rebrand;
- Import;
- Administrative Stock Transfer;
- Shifting service;
- Commodity code correction;
- Departure.
Business process
General
In ATLAS, these Activities are initiated through:
- Movements. Which concerns physical movement of goods; and/or
- Services. Basically any activity that is not a Movement.
An Activity is either a Movement or a Service. Whenever it does not concern a physical Movement of goods, it concerns a Service.
Product registration
- validate if the concerned Product falls within the scope of our licenses;
- check if certain prohibitions / restrictions apply;
- what documents can be expected; and
- if the Product may be eligible for a Preferential rate.
The Cargo Document functionality enables the capture and recording of data from physical documents or incoming electronic messages required to support business processes from a compliance perspective, with the source document serving as the basis for all entered information.
Movements
Checks at Release to OPS are based on current data and are informational only, as actual execution may differ, and any resulting consequences requiring attention are highlighted at this stage.
Check at Release to OPS yet to be developed for ETA go-live
Services

- It concerns Products classified mainly on the basis of their aromatic content. Different approved methods apply, whereby the results can be different. We have seen some instances where the different methods lead to slightly different results, but with a difference that does matter for the classification;
- Lines are never completely empty. Sometimes this can lead to slight changes in sulphur content for example, where again these minimal changes are decisive for classification purposes.


Parcel administration
The parcel administration model distinguishes between three separate business concepts: Product, Parcel, and Stock Keeping Unit (SKU). Although a Parcel may in some situations correspond to a single SKU, these concepts are fundamentally different and can not be treated as interchangeable within the system.
The three layers are defined as follows:
- Product – The physical commodity handled at the terminal, such as gas oil, gasoline, or naphtha.
- Parcel – The administrative representation of a physical product. A Parcel records characteristics such as commodity code, customs status, origin, cargo documents and, where applicable, consignor or consignee information.
- Stock Keeping Unit (SKU) – An administrative unit used for inventory management and record-keeping purposes. SKUs support stock administration but do not define the legal or logistical identity of a Parcel.
Parcel creation for incoming products
For incoming products, the User registers the received physical product by creating one or more Parcels. Each Parcel serves as an administrative reflection of the product and captures attributes such as the commodity code, customs status, and origin.
These attributes alone do not determine the number of Parcels that must be created. Even where multiple quantities of product share identical administrative characteristics, the User may decide to register them as separate Parcels. Consequently, the creation and granularity of Parcels for incoming receipts are driven by the User's administrative requirements rather than solely by the product characteristics.
Parcel creation for outgoing products
The same principle applies to the dispatch of goods. When product is loaded for shipment, the User creates one or more Parcels to represent the administrative distribution of the physical product.
For example, 15,000 MT of gasoline with a T1 (non-Union) customs status may be loaded, with 5,000 MT destined for one terminal and 10,000 MT destined for another. Although both quantities have the same commodity code, customs status, and origin, separate Parcels are created because they are intended for different consignees or destinations and are accompanied by different transport or customs documentation. The User determines the required Parcel structure based on the operational and documentary requirements of the shipment.
The Parcel is defined when Products are registered by the User as these are carried by the Means of Transport including administrative characteristics such as Commodity code, customs status, origin, cargo documents, consignee, etc.
Parcel Administration During Product Movements
For product handling, the creation and movement of Parcels is driven by the physical product being processed and its customs status. In these scenarios, the IT system determines the Parcels based on the administrative composition of the stock being moved.
For example, a Vessel or a tank containing 7,000 MT of gasoil may consist of 3,000 MT with T1 customs status and 4,000 MT with T2 customs status. When more than 4,000 MT is moved, the operation results in the movement of two separate Parcels, reflecting the two different customs statuses.
Where a Parcel contains multiple underlying SKUs, such as SKUs with different origins, the associated SKUs follow the Parcel movement according to the First In, First Out (FIFO) allocation methodology. As a result, the Parcel defines the administrative movement of the product, while the SKUs are allocated within that Parcel in FIFO order to maintain accurate inventory records and traceability.
The administration of Parcels for liquid bulk operations requires a dynamic approach because the physical quantity moved during an operation is not known until the operation has been completed. At the same time, customs legislation requires that goods are declared and presented before the operation takes place, as subsequent blending or commingling may make it impossible to distinguish the originally declared goods.
Initial Parcel determination
Prior to the start of a movement, the IT system determines the Product and the corresponding Parcel or Parcels based on the planned quantity. The determination is performed using the inventory position as it exists immediately before the operation commences.
At this point, the system queries the record keeping to identify all relevant Parcels and their administrative characteristics, including customs status. Based on this assessment, the required customs declarations can be prepared and lodged before the physical movement starts.
The quantity used during this initial assessment is an estimated or planned quantity. The actual transferred quantity cannot yet be established.
Determination of the actual quantity
In liquid bulk operations, the actual moved quantity is established only after completion of the physical operation. The quantity may be determined through:
- Tank measurements before and after the operation;
- Flow meter readings; or
- Weighbridge measurements.
Only after these measurements have been completed can the definitive quantity of Product and the corresponding Parcel allocation be determined.
Retrospective Parcel validation
Once the actual moved quantity is known, the IT system performs a retrospective validation of the Parcel administration. This validation reassesses which Parcels should have been moved based on the inventory situation that existed immediately before the operation started, rather than the inventory situation at the time the reassessment is executed.
This temporal consistency is essential because customs declarations are based on the goods that were presented immediately prior to the operation. Consequently, the reassessment must use the same point-in-time inventory snapshot as the initial determination.
In practice, the Product already present in the receiving tank is treated as a fixed condition that existed before the movement and therefore remains unchanged for purposes of the reassessment.
Once the moved quantity has been measured, the final quantity is established and the circumstances of the Activity are reassessed retrospectively based on the situation as it existed at the start of execution.
Parcel identity and corrections
Each Parcel must have a unique reference that identifies the represented Product and its associated customs status. This unique reference should remain unchanged between the initial assessment before the operation and the retrospective validation after completion.
In most cases, the retrospective validation will confirm the initial Parcel determination, with only the moved quantity requiring adjustment. In exceptional circumstances, however, the final measured quantity may lead to a different Parcel composition than originally anticipated. For example, an operation initially expected to involve a single Parcel may ultimately require two Parcels because the final quantity spans different customs status boundaries, or vice versa. As a result, customs declarations may in some cases not be lodged prior to the start of the operation, or may in hindsight have been created when they were not required.
In such cases, the IT system must correct the Parcel administration and any associated customs declarations while preserving the original assessment timestamp representing the moment immediately before the operation commenced. This ensures both an accurate inventory administration and a legally consistent customs audit trail.
Customs compliance risk is controlled at Product entry (license validation), while operational accuracy is ensured retrospectively through measured quantities and Parcel reconciliation.
In the near future it is expected that declarations for certain Products must be declared real-time via the Normal procedure instead of by means of Entry Into the Declarants Record (EIDR). In that case correction will be more cumbersome!
Customs declaration validation
During the preparation of an Activity, the system determines the customs obligations associated with the identified Parcel(s). This includes identifying the required customs procedure based on the Product characteristics, including commodity code and customs status.
As part of this process, the system validates whether the Parcel(s) involved in the Activity have already been declared under the required customs procedure. If a Parcel has already been covered by an existing declaration for the applicable procedure, no new declaration is created for that Parcel within the scope of the Activity.
This validation ensures that customs declarations are only created where necessary and prevents duplication of declarations for Parcels that have already been correctly declared under the relevant customs regime.
Compliance management
Customs Procedure Operation

Business rules

Business rules

- The first condition relates to the assessment of the Customs procedure for the operation. In this example, all Parcels are of the same Commodity code AND have the same Quality group "High aromatic oils" not Bonded Product subject to CPM. Hence, the result for the Customs Procedure Operation is Storage;
- The Product declared is of the T1 - Bonded Customs status;
- It is the first time the product on board of the Vessel arrives at the Terminal. This is recognized by the System on the basis of the Parcel not having a Parent reference. In case a parcel has a Parent reference, that means the Parcel comes from another Parcel we have registered before and hence, it is not the first time arrival;
- The Activity type is a Movement.
Customs declarations or records
- Export declarations (B1 and B4). These are done via the normal procedure; and
- In case preferred or required by law the Import declaration (H1).


- Input from the User on the basis of information received from the Customer via the Nomination. Such as the Product and its Commodity Code, the Customs status, the origin, the customs value, etc.;
- The application of business rules. For example, in case of a Release for Free Circulation the procedure codes are determined on the basis of certain parameters. Below we have included an example where the Current Procedure Code is dictated by the fact that it concerns Excise controlled goods and the Previous Customs Code is based on the fact that it concerns goods coming from IP.
- Defaults for Measure Types. Below some examples of default values for Measure Types, used in the event such Measure Type is applicable for the product declared.
Reporting
Monitoring licenses

Bill of Discharge
Detailed Stock Management




Audit file
Technical specifications
Main communication Source system to CMS - Transaction JSON
The Transaction JSON is the standardized interface used by the source system to communicate business and operational data to the customs management system. It contains all relevant information relating to a logistics activity, such as the movement of goods, transport details, involved parties, storage locations, and the products or parcels that are part of the transaction.
The information contained in the Transaction JSON serves as the primary input for the creation of customs declarations and other compliance-related processes. Each message must accurately represent the underlying business transaction and include all data required to determine the correct customs treatment of the goods.
The quality, completeness, and timeliness of the data provided are critical. Incorrect, incomplete, or delayed information may result in inaccurate customs declarations, non-compliance with customs legislation, delays in the supply chain, financial penalties, or increased audit risks.
It is therefore the responsibility of the source system and the data provider to ensure that:
- all mandatory data elements are populated correctly;
- the information reflects the actual business transaction and physical movement of the goods;
- product and parcel details, including commodity classifications, origin, quantities, and supporting documents, are accurate and up to date;
- changes affecting the transaction are communicated promptly to the customs management system.
By providing reliable and timely Transaction JSON messages, organizations can support compliant customs processes, minimize operational risks, and ensure efficient processing of import, export, transit, and storage activities.
| JSON Field | Business Name | Description | Mandatory | Customer Data Source | Example Value |
|---|---|---|---|---|---|
sourceApplication | Source System | System from which the data originates. | Yes | Internal integration | ATLAS |
terminal | Terminal | Terminal or operational location where the goods are handled. | Yes | Terminal Operator / WMS | ETT |
reference | Movement Reference | Unique reference for the movement or customs transaction. | Yes | ERP / WMS | PR_ACTI_AC10007466 |
displayReference | Display Reference | Human-readable reference shown to users. | Yes | ERP | AC 007 466 |
taxCountry | Customs Country | Country where the customs process takes place. | Yes | ERP | NL |
cmsReference | CMS Reference | Internal customs management reference. | Yes | Internal system | 530E2446-… |
overrideCheckAlert | Override Indicator | Indicates whether validation warnings have been overridden. | Yes | Internal system | Y |
presentationDateTime | Presentation Date & Time | Date and time when goods are presented to Customs. | Yes | Terminal / WMS | 2026-05-30T20:59:17Z |
Activity
| JSON Field | Business Name | Description | Mandatory | Customer Data Source | Example Value |
|---|---|---|---|---|---|
activities.reference | Activity Reference | Unique identifier of the activity. | Yes | ERP | PR_ACTI_AC10007466 |
activities.displayReference | Activity Display Reference | User-friendly activity number. | Yes | ERP | AC 007 466 |
activities.activityType | Activity Type | Type of activity. Movement or Service. | Yes | ERP | MOVEMENT |
activities.nominationReference | Nomination Reference | Unique identifier of the activity nomination. | Conditional | Scheduling system | NM 004 824 |
activities.relatedReference | Related Reference | Reference to a related movement. | No | ERP | — |
Storage Unit / Transport
| JSON Field | Business Name | Description | Mandatory | Customer Data Source | Example Value |
|---|---|---|---|---|---|
medium.type | Movement Direction | Indicates source or destination storage. | Yes | WMS | FROM_STORAGE_UNIT |
storageUnit.storageUnitReference | Storage Unit Reference | Identifier of the storage location. | Yes | WMS | VS10003221:1 |
visit.visitReference | Visit Reference | Identifier of terminal visit of the means of transport. | Conditional | Terminal system | VS 003 221 |
visit.transportMeansReference | Transport Means Name | Name of vessel or vehicle. | Yes | Shipping documents | MARAN WIND |
visit.transportMeansTypeCode | Transport Means Type | Mode of transport code. | Yes | Shipping documents | VES |
visit.transportMeansNationalityCode | Transport Means Nationality | Registration or flag country. | Conditional | Shipping documents | BS |
tank.tankName | Tank Name | Receiving or storage tank identifier. | Conditional | Terminal / WMS | T08 |
Goods Item (Parcel)
| JSON Field | Business Name | Description | Mandatory | Customer Data Source | Example Value |
|---|---|---|---|---|---|
parcels.reference | Goods Item Reference | Unique goods item identifier. | Yes | ERP | 2605/SKU20:59… |
parcels.parentReference | Parent Reference | Parent goods item reference. | No | ERP | 2605/SKU08:07… |
parcels.firstTimeArrival | First Arrival in EU | Indicates first arrival into the EU customs territory. | Conditional | Customs process | Y |
parcels.inwardProcessingFlag | Inward Processing | Indicates Inward Processing procedure. | Conditional | Customs department | N |
parcels.commercialPolicyMeasureFlag | Commercial Policy Measure | Indicates trade policy measures apply. | Conditional | Customs department | N |
parcels.exceptionDocument | Exception Document | Supporting exemption document reference. | Conditional | Compliance | — |
Customer Information
| JSON Field | Business Name | Description | Mandatory | Customer Data Source | Example Value |
|---|---|---|---|---|---|
parties.customer.reference | Customer Code | Internal customer identifier. | No | ERP | COMP |
parties.customer.name | Customer Name | Name of importer/exporter. | Yes | Master data | Company A |
parties.customer.eori | EORI Number | EORI registration number. | Yes | Master data | NLXXX |
parties.customer.vatNumber | VAT Number | VAT registration number. | Conditional | Master data | NLXXX |
parties.customer.language | Preferred Language | Customer language. | No | Master data | NL |
parties.customer.address.streetName | Street | Customer street name. | Yes | Master data | Weena |
parties.customer.address.houseNumber | House Number | Customer house number. | Yes | Master data | 690 |
parties.customer.address.postalCode | Postal Code | Customer postal code. | Yes | Master data | 3012CN |
parties.customer.address.cityName | City | Customer city. | Yes | Master data | Rotterdam |
parties.customer.address.countryCode | Country | Customer country. | Yes | Master data | NL |
parties.customer.cbsCode | Statistical Code | Statistical reporting code. | No | Master data | 49933 |
parties.customer.locationName | Location Name | Named business location. | No | Master data | — |
Goods Location
| JSON Field | Business Name | Description | Mandatory | Customer Data Source | Example Value |
|---|---|---|---|---|---|
location.address.streetName | Goods Location Street | Street where goods are located. | Yes | WMS | Moezelweg |
location.address.houseNumber | Goods Location House Number | House number. | Yes | WMS | 151 |
location.address.postalCode | Goods Location Postal Code | Postal code. | Yes | WMS | 3198 LS |
location.address.cityName | Goods Location City | City of storage. | Yes | WMS | Europoort Rotterdam |
location.address.countryCode | Goods Location Country | Country where goods are stored. | Yes | WMS | NL |
location.cbsCode | Goods Location Statistical Code | Statistical location code. | No | WMS | 325 |
location.locationName | Goods Location Name | Name of warehouse or facility. | No | WMS | — |
Country Information
| JSON Field | Business Name | Description | Mandatory | Customer Data Source | Example Value |
|---|---|---|---|---|---|
destinationCountryCode | Country of Destination | Final destination country. | Yes | Commercial documents | NL |
dispatchCountryCode | Country of Dispatch | Country from which goods are dispatched. | Yes | Commercial documents | GB |
origin.type=NON-PREFERENTIAL.countryCode | Non-Preferential Origin | Customs country of origin. | Yes | Supplier declaration | GB |
origin.type=PREFERENTIAL.countryCode | Preferential Origin | Preferential origin under trade agreement. | Conditional | Origin certificate | — |
Commodity Information
| JSON Field | Business Name | Description | Mandatory | Customer Data Source | Example Value |
|---|---|---|---|---|---|
commodity.code | Commodity Code | HS/CN/TARIC classification. | Yes | Product master | 2709009000 |
commodity.description | Commodity Description | Commercial description of goods. | Yes | Product master | Kraken Crude Oil |
commodity.reference | Product Reference | Internal product identifier. | No | Product master | — |
customsStatus | Customs Status | Customs status of the goods. | Yes | Customs/WMS | BONDED |
Supporting Documents
| JSON Field | Business Name | Description | Mandatory | Customer Data Source | Example Value |
|---|---|---|---|---|---|
cargoDocuments.type | Document Type | Type of supporting document. | Conditional | Shipping documents | B_L |
cargoDocuments.reference | Document Reference | Reference number of the document. | Conditional | Shipping documents | 003 221 |
cargoDocuments.quantities.kgv | Document Gross Weight | Gross weight on document. | Conditional | Bill of Lading | 33,000,000 |
cargoDocuments.quantities.l15 | Document Volume @15°C | Standard volume on document. | Conditional | Bill of Lading | 33,863,520 |
cargoDocuments.quantities.mtv | Manifest Quantity | Quantity from manifest. | Conditional | Cargo manifest | 33,000,000 |
Quantity Information
| JSON Field | Business Name | Description | Mandatory | Customer Data Source | Example Value |
|---|---|---|---|---|---|
quantities.type | Quantity Type | Actual or estimated quantity. | Yes | Measurement system | ACTUAL |
quantities.kgv | Gross Weight (kg) | Gross weight including packaging. | Yes | Weighbridge / WMS | 5,501,823 |
quantities.kga | Net Weight (kg) | Net weight excluding packaging. | Yes | Weighbridge / WMS | 5,495,622 |
quantities.gmv | Gross Mass Volume | Gross mass volume, where applicable. | Conditional | Measurement system | — |
quantities.gma | Actual Gross Mass | Measured gross mass. | Conditional | Measurement system | — |
quantities.l15 | Volume @15°C | Volume corrected to 15°C. | Conditional | Metering system | 5,636,892 |
quantities.l20 | Volume @20°C | Volume corrected to 20°C. | Conditional | Metering system | 5,655,158 |
quantities.ml5 | Alcohol Volume @5°C | Alcohol volume at 5°C. | Conditional | Laboratory | — |
quantities.alcPerc | Alcohol Percentage | Alcohol strength by volume. | Conditional | Laboratory | — |
Product Characteristics
| JSON Field | Business Name | Description | Mandatory | Customer Data Source | Example Value |
|---|---|---|---|---|---|
density.value | Density | Measured product density. | Conditional | Laboratory | 0.845 |
density.uom | Density Reference | Reference basis for density measurement. | Conditional | Laboratory | D15 |
unNumber | UN Number | Dangerous goods UN classification number. | Conditional | Safety Data Sheet (SDS) | 1203 |
Example JSON structure
"sourceApplication": "ATLAS",
"terminal": "ETT",
"reference": "MVM000012345",
"displayReference": "MVM 012 345",
"taxCountry": "NL",
"cmsReference": "12345678-ABCD-1234-EFGH-987654321000",
"overrideCheckAlert": "N",
"presentationDateTime": "2026-01-15T10:30:00Z",
"activities": [
{
"reference": "MVM000012345",
"displayReference": "MVM 012 345",
"activityType": "MOVEMENT",
"nominationReference": "NOM00056789",
"relatedReference": null,
"medium": [
{
"type": "FROM_STORAGE_UNIT",
"storageUnit": {
"storageUnitReference": "STORAGE_A01",
"visit": {
"visitReference": "VISIT001234",
"transportMeansReference": "MV EXAMPLE STAR",
"transportMeansTypeCode": "VES",
"transportMeansNationalityCode": "NL",
"changedTransportArrangement": null
}
},
"parcels": [
{
"reference": "PARCEL000001",
"parentReference": null,
"firstTimeArrival": "Y",
"inwardProcessingFlag": "N",
"commercialPolicyMeasureFlag": "N",
"exceptionDocument": null,
"parties": {
"customer": {
"reference": "CUST001",
"name": "Example Trading B.V.",
"eori": "NL123456789000",
"vatNumber": "NL123456789B01",
"language": "EN",
"address": {
"cityName": "Rotterdam",
"countryCode": "NL",
"streetName": "Example Street",
"postalCode": "3011AA",
"houseNumber": "100"
},
"cbsCode": "12345",
"locationName": "Head Office"
}
},
"location": {
"language": "EN",
"address": {
"cityName": "Rotterdam",
"countryCode": "NL",
"streetName": "Harbour Road",
"postalCode": "3199AA",
"houseNumber": "1"
},
"cbsCode": "325",
"locationName": "Tank Farm A"
},
"destinationCountryCode": "NL",
"dispatchCountryCode": "US",
"origin": [
{
"type": "NON-PREFERENTIAL",
"countryCode": "US"
},
{
"type": "PREFERENTIAL",
"countryCode": null
}
],
"commodity": {
"code": "2709009000",
"description": "Crude Petroleum Oil",
"reference": "MAT-0001"
},
"customsStatus": "BONDED",
"cargoDocuments": [
{
"type": "B_L",
"reference": "BL123456789",
"quantities": [
{
"kgv": 1000000,
"l15": 1185000
}
]
},
{
"type": "MANIFEST_INFO",
"reference": "MANIFEST001",
"quantities": [
{
"mtv": 1185000
}
]
}
],
"unNumber": "1267",
"quantities": [
{
"kgv": 1000000,
"kga": 995000,
"gmv": null,
"gma": null,
"l15": 1185000,
"l20": 1192000,
"ml5": null,
"alcPerc": null,
"type": "ACTUAL"
}
],
"density": {
"value": 0.840,
"uom": "D15"
}
}
]
},
{
"type": "TO_STORAGE_UNIT",
"storageUnit": {
"storageUnitReference": "TANK_101",
"tank": {
"tankName": "Tank 101"
}
},
"parcels": [
{
"reference": "PARCEL000002",
"parentReference": "PARCEL000001",
"firstTimeArrival": "N",
"inwardProcessingFlag": "N",
"commercialPolicyMeasureFlag": "N",
"exceptionDocument": null,
"parties": {
"customer": {
"reference": "CUST001",
"name": "Example Trading B.V.",
"eori": "NL123456789000",
"vatNumber": "NL123456789B01",
"language": "EN",
"address": {
"cityName": "Rotterdam",
"countryCode": "NL",
"streetName": "Example Street",
"postalCode": "3011AA",
"houseNumber": "100"
},
"cbsCode": "12345",
"locationName": "Head Office"
}
},
"location": {
"language": "EN",
"address": {
"cityName": "Rotterdam",
"countryCode": "NL",
"streetName": "Harbour Road",
"postalCode": "3199AA",
"houseNumber": "1"
},
"cbsCode": "325",
"locationName": "Tank Farm A"
},
"destinationCountryCode": "NL",
"dispatchCountryCode": "US",
"origin": [
{
"type": "NON-PREFERENTIAL",
"countryCode": "US"
},
{
"type": "PREFERENTIAL",
"countryCode": null
}
],
"commodity": {
"code": "2710194300",
"description": "Gas Oil",
"reference": "MAT-0002"
},
"customsStatus": "BONDED",
"cargoDocuments": [],
"unNumber": "1202",
"quantities": [
{
"kgv": 500000,
"kga": 497500,
"gmv": null,
"gma": null,
"l15": 595000,
"l20": 598000,
"ml5": null,
"alcPerc": null,
"type": "ACTUAL"
}
],
"density": {
"value": 0.835,
"uom": "D15"
}
}
]
}
]
}
]
}
Business rules to determine customs declarations required for all Products involved in the Activity
1. Overall Structure of the Rules
All business rules follow a consistent pattern:
Rule Logic
Each rule is evaluated using:
- IF → starting condition
- AND / OR → additional conditions
- Conditions are based on:
- Customs status (e.g. BONDED, EXCISE_CONTROLLED, DOMESTIC)
- Destination (EU, EFTA, non-EU, special territories)
- Activity type (MOVEMENT, TAKE_IN, DEPARTURE, etc.)
- Procedure (EXPORT, RE-EXPORT, STORAGE, INWARD_PROCESSING, etc.)
- Flags (e.g. first arrival, monthly approval)
Rule Outcome
Each rule determines:
- Required customs procedure
- Required documents
- Required system message / record
- Final warehouse or closing process
2. Export Rules (Functional Description)
Export rules are primarily driven by:
- Customs status of goods
- Destination
- Transport specifics
- Excise applicability
2.1 Excise-Controlled Goods (AAD)
Scenario
Goods are under excise suspension and must remain controlled during movement.
Functional Logic
- IF goods are excise controlled
- AND movement is export
- THEN apply excise + customs requirements depending on destination
Outcomes by Destination
A. Export to Non‑EU
- Documents:
- e-AD (excise)
- Export declaration (EX A - B1)
- Logic:
- e-AD is discharged by export declaration
- Export declaration is discharged by confirmation of exit
- Purpose:
- Maintain excise suspension until exit
B. Export to EFTA+
- If no transit possible (sea-only routes):
- Same as non-EU export
- If transit required (crossing EU):
- Add Transit document (T2)
- Export → Transit sequence
C. Export to Special Territories (Customs / VAT Exceptions)
Different combinations lead to B4 declarations:
| Territory Type | Outcome |
|---|---|
| Customs territory only | Export (B4) + T2LF |
| Customs + Excise | Export (B4) + T2LF |
| Customs + Excise + VAT | No export declaration |
D. Movement within EU
- Standard case:
- e-AD required
- Exception (VAG):
- Monthly declaration replaces e-AD
E. Pipeline Transport (Excise Goods)
- If monthly approval:
- VAGD (monthly declaration)
- No e-AD
2.2 Domestic (Free Circulation) Goods
Scenario
Goods are not subject to excise.
Functional Logic
- IF goods are DOMESTIC
- AND movement is export
Outcomes
A. Export to Non‑EU
- Document: Export declaration (B1)
- No e-AD required
- Proof of exit discharges liability
B. Export to EFTA+
- Same as export to non-EU
- Transit applies if crossing EU:
- Add T2 transit document
C. Export to Special Territories
- Use B4 declaration
- Add T2LF or T2L to prove Union status
D. Movement within EU
- No customs declaration
- Goods remain in free circulation
E. Pipeline Transport
- No customs requirements
2.3 Bonded Goods (T1 – Non-Union)
Scenario
Goods are not in free circulation and require customs supervision.
Functional Logic
- IF goods are BONDED
- AND procedure is RE-EXPORT or movement
Outcomes
A. Re-export to Non‑EU
- Document: Re-export declaration (B1)
- Confirmation of exit required
B. Re-export to EFTA+
- Without transit → same as above
- With EU crossing:
- Add Transit document (T1)
C. Movement within EU
- Transit procedure (T1) mandatory
D. Internal Movement (VAG Exception)
- No transit declaration
- Use VAG document
E. Pipeline Transport
- Considered automatically under transit
- No T1 document required
3. Import Rules (Functional Description)
Import rules are driven by:
- Customs procedure
- Customs status
- First arrival vs subsequent movements
- Operational activity (storage, blending, processing)
3.1 First Arrival of Bonded Goods
A. Storage (No processing)
- Condition:
- First arrival = YES
- No blending
- Outcome:
- Entry into Customs Warehouse
- Notification of Presentation
B. Usual Forms of Handling (UFH)
- Condition:
- Blending allowed under warehouse rules
- Outcome:
- Remains under Customs Warehouse
- Classified as UFH
C. Inward Processing
- Condition:
- Blending requiring processing license
- Outcome:
- Customs Warehouse → Inward Processing
- Requires additional declaration
3.2 Subsequent Movements (After First Arrival)
A. Inward Processing
- Applies when:
- Goods are blended with other qualities
- Outcome:
- Declared under Inward Processing
B. Usual Forms of Handling
- Applies when:
- Blending fits UFH criteria
- Outcome:
- Remains within Customs Warehouse
3.3 Administrative Stock Transfers
Purpose
Avoid physical segregation using accounting reallocation.
Logic
- IF activity = Administrative Stock Transfer
- AND target status includes BONDED
Outcome
- Reallocation of customs status:
- From Bonded → Excise or Domestic (or vice versa)
- No physical movement required
3.4 Release for Free Circulation (General Concept)
- Converts T1 (non-Union) → T2 (Union goods)
- May:
- Trigger customs debt
- Transfer goods into:
- Free warehouse
- Excise warehouse
3.5 Excise Warehouse Handling
- For excise-controlled goods:
- Entry into excise warehouse
- Possible:
- Storage
- Manufacturing
- Blending
3.6 Internal Activities
A. Shifting
- Internal movement within same warehouse
- No customs impact
B. Rebranding
- Creates new product identity
- Typically remains under same procedure
C. Commodity Code Correction
- Administrative correction
- May impact:
- Customs classification
- Warehouse allocation
4. Key Concepts Across All Rules
Customs Status Types
- BONDED (T1): Non-Union goods
- EXCISE_CONTROLLED: Goods under excise suspension
- DOMESTIC (FRE): Union goods in free circulation
Core Procedures
- Export / Re-export
- Transit (T1 / T2)
- Customs Warehouse
- Excise Warehouse
- Inward Processing
- Usual Forms of Handling
Exception Mechanisms
- VAG / VAGD: Monthly declarations replacing standard documents
- Pipeline transport: Simplified treatment
- Administrative stock transfer: Accounting-based status change
Document Types
- e-AD: Excise movement
- EX A (B1/B4): Export declaration
- T1 / T2: Transit
- T2L / T2LF: Proof of Union status
- VAG / VAGD: Monthly declaration
5. Simplified Rule Classification
| Category | Key Driver | Outcome |
|---|---|---|
| Export | Destination + status | Export / Transit / e-AD |
| Import | Procedure + activity | Warehouse / Processing |
| Exception | Approval flags | Simplified procedure |
| Internal | Activity type | No declaration or reassignment |
6. Key Takeaway
The entire rule engine can be summarized as:
Determine the customs status + movement type + destination → select the correct procedure → generate the required documents → ensure proper discharge (exit, transit, or warehouse accounting).
Business rules overview CMS
| Code | Title | Result | (Customs) procedure result (Closing record) | Conditions |
|---|---|---|---|---|
| IMP_BR01 | Bonded goods – First arrival, storage in Customs Warehouse | NOP:IE507 | CUSTOMS_WAREHOUSE | • Customs procedure operation = STORAGE • Status = BONDED • First arrival flag = Y • Activity type = MOVEMENT / TAKE_IN |
| IMP_BR02 | Bonded goods – First arrival with UFH | NOP:IE507 + CW:UFH | USUAL_FORMS_OF_HANDLING | • Customs procedure operation = USUAL_FORMS_OF_HANDLING • Status = BONDED • First arrival flag = Y • Activity type = MOVEMENT |
| IMP_BR03 | Bonded goods – First arrival with Inward Processing | NOP:IE507 + IP:IE015 | INWARD_PROCESSING | • Customs procedure operation = INWARD_PROCESSING • Status = BONDED • First arrival flag = Y • Activity type = MOVEMENT |
| IMP_BR04 | Administrative stock transfer – Excise controlled goods to Bonded | ADMIN (No message) | N/A | • Activity type = ADMINISTRATIVE_STOCK_TRANSFER • Status = EXCISE_CONTROLLED • Transferred customs status contains BONDED |
| IMP_BR05 | Administrative stock transfer – Domestic goods to Bonded | ADMIN (No message) | N/A | • Activity type = ADMINISTRATIVE_STOCK_TRANSFER • Status = DOMESTIC • Transferred customs status contains BONDED |
| IMP_BR06 | Bonded → Inward Processing (to storage unit) | IP:IE015 | INWARD_PROCESSING | • Customs procedure operation = INWARD_PROCESSING • Status = BONDED • First arrival flag = N • Previous closing record ≠ INWARD_PROCESSING • Activity type = MOVEMENT • Medium type = TO_STORAGE_UNIT |
| IMP_BR06A | Bonded → Inward Processing (from storage) | IP:IE015 | INWARD_PROCESSING | • Customs procedure operation = INWARD_PROCESSING • Status = BONDED • First arrival flag = N • Previous closing record ≠ INWARD_PROCESSING • Activity type = MOVEMENT • Medium type = FROM_STORAGE_UNIT |
| IMP_BR07 | Bonded goods – UFH (subsequent movement) | CW:UFH | USUAL_FORMS_OF_HANDLING | • Customs procedure operation = USUAL_FORMS_OF_HANDLING • Status = BONDED • First arrival flag = N • Previous closing record ≠ USUAL_FORMS_OF_HANDLING • Activity type = MOVEMENT • Medium type = TO_STORAGE_UNIT |
| IMP_BR07A | Rebrand after UFH | CW (update) | CUSTOMS_WAREHOUSE | • Customs procedure operation = USUAL_FORMS_OF_HANDLING • Activity type = REBRAND |

