<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: John Hall</title>
    <description>The latest articles on DEV Community by John Hall (@john_hall).</description>
    <link>https://dev.to/john_hall</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1549268%2F4821e545-14f1-4d22-9337-5cba5b4141ae.jpg</url>
      <title>DEV Community: John Hall</title>
      <link>https://dev.to/john_hall</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/john_hall"/>
    <language>en</language>
    <item>
      <title>Integrating T1 and T2 Data into Your TMS and ERP</title>
      <dc:creator>John Hall</dc:creator>
      <pubDate>Tue, 22 Sep 2026 07:08:08 +0000</pubDate>
      <link>https://dev.to/john_hall/integrating-t1-and-t2-data-into-your-tms-and-erp-3ji9</link>
      <guid>https://dev.to/john_hall/integrating-t1-and-t2-data-into-your-tms-and-erp-3ji9</guid>
      <description>&lt;h2&gt;
  
  
  The three data sets that must sync
&lt;/h2&gt;

&lt;p&gt;Three data sets need to stay in step across your customs, TMS and ERP stack. Shipment level customs status. Guarantee usage and remaining headroom. Proof of arrival and discharge for every transit movement.&lt;/p&gt;

&lt;p&gt;If any one of them drifts, the audit trail falls apart.&lt;/p&gt;

&lt;h3&gt;
  
  
  Mapping T1 and T2 to your data model
&lt;/h3&gt;

&lt;p&gt;Model the declaration type as an attribute of the consignment, not the shipment. A single trailer can carry both T1 and T2 consignments. Store the Union status evidence at the consignment level too, so the audit trail is intact if the goods are separated later. The &lt;a href="https://www.icustoms.ai/blogs/t1-vs-t2-transit-document/" rel="noopener noreferrer"&gt;T1 and T2 transit document guide&lt;/a&gt; illustrates why the consignment is the right unit.&lt;/p&gt;

&lt;h3&gt;
  
  
  Keep the discharge signal flowing back
&lt;/h3&gt;

&lt;p&gt;The most overlooked integration point is the return leg. Once the destination office discharges the movement, that signal has to write back into the TMS and ERP so the guarantee headroom is released and the audit trail is closed.&lt;/p&gt;

&lt;p&gt;Want to see the end to end flow? &lt;a href="https://www.icustoms.ai/book-a-demo/" rel="noopener noreferrer"&gt;Watch a demo&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>t1andt2</category>
      <category>tms</category>
      <category>erp</category>
      <category>integrating</category>
    </item>
    <item>
      <title>Integrating NCTS and CDS Into One Operational View</title>
      <dc:creator>John Hall</dc:creator>
      <pubDate>Mon, 21 Sep 2026 07:29:08 +0000</pubDate>
      <link>https://dev.to/john_hall/integrating-ncts-and-cds-into-one-operational-view-400b</link>
      <guid>https://dev.to/john_hall/integrating-ncts-and-cds-into-one-operational-view-400b</guid>
      <description>&lt;p&gt;The point of integration is not to hide the difference between NCTS and CDS. It is to surface it in one place.&lt;/p&gt;

&lt;h2&gt;
  
  
  Model each system as a service
&lt;/h2&gt;

&lt;p&gt;Two endpoints. Two schemas. Two audit trails. Any integration that pretends otherwise creates silent drift. The &lt;a href="https://www.icustoms.ai/blogs/ncts-vs-cds-difference/" rel="noopener noreferrer"&gt;NCTS and CDS operational comparison&lt;/a&gt; sets out the field-level differences worth respecting.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bind them at the consignment level
&lt;/h2&gt;

&lt;p&gt;Shipment identifiers, GMR references and product records live above the two systems. That is where the join belongs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Present a unified queue
&lt;/h2&gt;

&lt;p&gt;Operators do not need to know which platform is talking. They need to know what is blocking discharge or clearance.&lt;/p&gt;

&lt;h2&gt;
  
  
  Route corrections to both endpoints
&lt;/h2&gt;

&lt;p&gt;A single amendment action, two API calls under the hood.&lt;/p&gt;

&lt;h2&gt;
  
  
  Report on both, together
&lt;/h2&gt;

&lt;p&gt;Discharge times and clearance times belong on the same dashboard.&lt;/p&gt;

&lt;p&gt;Ready to see a unified operational view? &lt;a href="https://www.icustoms.ai/book-a-demo/" rel="noopener noreferrer"&gt;Watch a demo&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ncts</category>
      <category>cds</category>
      <category>integrating</category>
      <category>ai</category>
    </item>
    <item>
      <title>Integrating NCTS5 Filing With Freight Systems</title>
      <dc:creator>John Hall</dc:creator>
      <pubDate>Fri, 18 Sep 2026 07:21:37 +0000</pubDate>
      <link>https://dev.to/john_hall/integrating-ncts5-filing-with-freight-systems-2mmc</link>
      <guid>https://dev.to/john_hall/integrating-ncts5-filing-with-freight-systems-2mmc</guid>
      <description>&lt;h2&gt;
  
  
  Why integrate at all?
&lt;/h2&gt;

&lt;p&gt;Integrated filing removes duplicate data entry between transport management systems, warehouse systems and customs software. It also cuts rejection rates by using validated master data.&lt;/p&gt;

&lt;h2&gt;
  
  
  Integration points
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Consignor and consignee master data from CRM or TMS&lt;/li&gt;
&lt;li&gt;Commodity codes from product masters or ERP&lt;/li&gt;
&lt;li&gt;Guarantee data from finance or treasury systems&lt;/li&gt;
&lt;li&gt;Route and office data from routing engines
## Data mapping&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Map commercial invoice lines to goods items. Map shipping units to house consignments. Map the top-level movement to the consignment record. For the full &lt;a href="https://www.icustoms.ai/blogs/how-to-create-ncts-transit-declaration/" rel="noopener noreferrer"&gt;NCTS declaration workflow&lt;/a&gt;, review how each mapping supports the IE015 message.&lt;/p&gt;

&lt;h2&gt;
  
  
  Message handling
&lt;/h2&gt;

&lt;p&gt;Send IE015 to the office of departure. Parse the returned MRN and store it against the movement record. Handle functional error responses at the field level.&lt;/p&gt;

&lt;h2&gt;
  
  
  TAD distribution
&lt;/h2&gt;

&lt;p&gt;Once the TAD is issued, distribute the PDF and MRN barcode to drivers, subcontractors and third-party portals through your integration layer.&lt;/p&gt;

&lt;p&gt;Want to see NCTS5 integration ready out of the box? &lt;a href="https://www.icustoms.ai/book-a-demo/" rel="noopener noreferrer"&gt;Watch a demo&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>integration</category>
      <category>ncts5</category>
      <category>tms</category>
      <category>erp</category>
    </item>
    <item>
      <title>Integrating NCTS Phase 5 With Your TMS and ERP</title>
      <dc:creator>John Hall</dc:creator>
      <pubDate>Thu, 17 Sep 2026 07:28:04 +0000</pubDate>
      <link>https://dev.to/john_hall/integrating-ncts-phase-5-with-your-tms-and-erp-1g26</link>
      <guid>https://dev.to/john_hall/integrating-ncts-phase-5-with-your-tms-and-erp-1g26</guid>
      <description>&lt;p&gt;The point of integrating NCTS with a TMS or ERP is not to move messages. It is to keep MRN state, guarantee state and shipment state in sync so no one has to reconcile them by hand.&lt;/p&gt;

&lt;h3&gt;
  
  
  The three canonical objects
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;The MRN. The anchor for every transit event.&lt;/li&gt;
&lt;li&gt;The guarantee. A running balance of committed amounts.&lt;/li&gt;
&lt;li&gt;The shipment. The business object the rest of the company cares about.
The &lt;a href="https://www.icustoms.ai/blogs/eu-customs-transit-procedure/" rel="noopener noreferrer"&gt;Movement Reference Number in transit&lt;/a&gt; guide sets out how the MRN is issued and how it moves through the offices.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Integration checkpoints
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Declaration submission. Enforce guarantee headroom check at TMS side before calling NCTS.&lt;/li&gt;
&lt;li&gt;Release. Persist the MRN and TAD reference on the shipment record.&lt;/li&gt;
&lt;li&gt;Transit. Append every office-of-transit notification to the MRN timeline.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Destination. Mark shipment as discharged only on the NCTS discharge message.&lt;/p&gt;
&lt;h3&gt;
  
  
  Common failure modes
&lt;/h3&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Duplicate MRNs from retry loops without idempotency keys.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Guarantee state drifting between TMS and NCTS.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Discharge received but not written back to the shipment.&lt;/p&gt;
&lt;h3&gt;
  
  
  What good looks like
&lt;/h3&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One source of truth for every open MRN. Alerts on age and on guarantee headroom. Zero manual reconciliation at week end.&lt;/p&gt;

&lt;p&gt;Bring NCTS, guarantees and shipments into one workflow. &lt;a href="https://www.icustoms.ai/book-a-demo/" rel="noopener noreferrer"&gt;Watch a demo&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>tms</category>
      <category>erp</category>
      <category>ncts</category>
      <category>integrating</category>
    </item>
    <item>
      <title>Integrating TMS, WMS and Customs for UK Transit in 2026</title>
      <dc:creator>John Hall</dc:creator>
      <pubDate>Wed, 16 Sep 2026 07:56:48 +0000</pubDate>
      <link>https://dev.to/john_hall/integrating-tms-wms-and-customs-for-uk-transit-in-2026-3gfi</link>
      <guid>https://dev.to/john_hall/integrating-tms-wms-and-customs-for-uk-transit-in-2026-3gfi</guid>
      <description>&lt;h2&gt;
  
  
  The integration problem
&lt;/h2&gt;

&lt;p&gt;Most operations run three separate systems: a TMS for movement, a WMS for inventory, and a customs platform for declarations. UK transit customs only works when those three share a common reference set.&lt;/p&gt;

&lt;h3&gt;
  
  
  Shared references that make the join
&lt;/h3&gt;

&lt;p&gt;A shipment identifier, an EORI, a commodity code and an origin flag are the minimum shared fields. Add the export MRN, transit MRN and GMR once they exist, and the join becomes deterministic across systems. A field-level view is in this &lt;a href="https://www.icustoms.ai/blogs/uk-post-brexit-transit-customs/" rel="noopener noreferrer"&gt;UK-EU freight compliance walkthrough&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Event triggers that keep systems in sync
&lt;/h3&gt;

&lt;p&gt;Customs events — declaration accepted, transit MRN issued, GMR committed, arrival notification received — should trigger status changes in the TMS and stock releases in the WMS. Missing event wiring produces the classic "phantom pending" shipments that survive long after the truck has cleared.&lt;/p&gt;

&lt;h3&gt;
  
  
  FAQ
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Can these integrations be built without APIs?&lt;/strong&gt;&lt;br&gt;
File-based integration works but adds latency. Event-driven APIs are strongly preferred for GVMS gate order.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which system should own the primary shipment ID?&lt;/strong&gt;&lt;br&gt;
Whichever system creates the shipment first — usually the TMS. Every downstream system references it.&lt;/p&gt;

&lt;p&gt;Ship customs as an event stream. &lt;a href="https://www.icustoms.ai/book-a-demo/" rel="noopener noreferrer"&gt;Watch a demo&lt;/a&gt; with iCustoms.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>tms</category>
      <category>wms</category>
      <category>integrating</category>
    </item>
    <item>
      <title>Integrating with HMRC's NCTS Phase 5 Trader Test Application</title>
      <dc:creator>John Hall</dc:creator>
      <pubDate>Tue, 15 Sep 2026 07:52:50 +0000</pubDate>
      <link>https://dev.to/john_hall/integrating-with-hmrcs-ncts-phase-5-trader-test-application-5090</link>
      <guid>https://dev.to/john_hall/integrating-with-hmrcs-ncts-phase-5-trader-test-application-5090</guid>
      <description>&lt;h2&gt;
  
  
  Why the test app exists
&lt;/h2&gt;

&lt;p&gt;The Transit Test Application is HMRC's trader-facing sandbox. It accepts IE015 submissions without touching live movements and returns the full NCTS 5 message range so your integration can rehearse both success and rejection paths.&lt;/p&gt;

&lt;h2&gt;
  
  
  Access
&lt;/h2&gt;

&lt;p&gt;Access is via Government Gateway with credentials tied to an authorised EORI. Getting user assignment right inside the organisational account is what unblocks a first-week go-live.&lt;/p&gt;

&lt;p&gt;The wider context is in the iCustoms &lt;a href="https://www.icustoms.ai/blogs/ncts-phase-5-guide/" rel="noopener noreferrer"&gt;NCTS 5 testing environment guide&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to rehearse
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Happy path: IE015 → IE028 → IE029.&lt;/li&gt;
&lt;li&gt;Rejection path: IE015 → IE056 with field pointers.&lt;/li&gt;
&lt;li&gt;Refusal path: IE015 → IE051 or IE055.&lt;/li&gt;
&lt;li&gt;Arrival: IE007 → IE043 → IE044 → IE045.
## Ship without surprises&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://www.icustoms.ai/book-a-demo/" rel="noopener noreferrer"&gt;Watch a demo&lt;/a&gt; to see a pre-integrated NCTS 5 platform.&lt;/p&gt;

</description>
      <category>ci</category>
      <category>hmrc</category>
      <category>ai</category>
      <category>nctsphase5</category>
    </item>
    <item>
      <title>Integrating TSS AI with the Rest of Your Trade Stack</title>
      <dc:creator>John Hall</dc:creator>
      <pubDate>Mon, 14 Sep 2026 07:40:03 +0000</pubDate>
      <link>https://dev.to/john_hall/integrating-tss-ai-with-the-rest-of-your-trade-stack-1jjo</link>
      <guid>https://dev.to/john_hall/integrating-tss-ai-with-the-rest-of-your-trade-stack-1jjo</guid>
      <description>&lt;h2&gt;
  
  
  Why integration decides ROI
&lt;/h2&gt;

&lt;p&gt;Standalone TSS AI leaves value on the table. The wins compound when extraction, ERP, freight, and reporting share the same product and declaration records.&lt;/p&gt;

&lt;h2&gt;
  
  
  Product master integration
&lt;/h2&gt;

&lt;p&gt;Send your product catalogue in. Pull enriched records out. Match on a stable ID, not a description. The reuse layer only pays off when catalogue changes flow in near real time. This is why source-data hygiene is non-negotiable, as the &lt;a href="https://www.icustoms.ai/blogs/tss-customs-automation-ai/" rel="noopener noreferrer"&gt;manual customs work reduction article&lt;/a&gt; explains.&lt;/p&gt;

&lt;h2&gt;
  
  
  Freight and transport document ingestion
&lt;/h2&gt;

&lt;p&gt;Wire your freight forwarder feeds into the extraction queue. Push transport documents automatically. Reduce email-based handoffs.&lt;/p&gt;

&lt;h2&gt;
  
  
  ERP write-back
&lt;/h2&gt;

&lt;p&gt;Push confirmed declaration data back to finance. Landed cost, duty accruals, and origin records all belong in the ERP.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reporting
&lt;/h2&gt;

&lt;p&gt;Expose a read-only reporting API. Volumes, rejection rates, correction reasons, and audit events all belong in your BI stack.&lt;/p&gt;

&lt;h2&gt;
  
  
  Identity and authorisation
&lt;/h2&gt;

&lt;p&gt;Single sign-on plus role-based permissions is table stakes. Auditors will ask.&lt;/p&gt;

&lt;h2&gt;
  
  
  Webhooks for events
&lt;/h2&gt;

&lt;p&gt;Submission, acceptance, rejection, and status change events should fire webhooks. Do not scrape screens.&lt;/p&gt;

&lt;h2&gt;
  
  
  Compliance boundaries
&lt;/h2&gt;

&lt;p&gt;UKIMS status, EORI, and other authorisation records stay under the trader's control. The platform stores them. The trader owns them.&lt;/p&gt;

&lt;p&gt;Talk integration with us. &lt;a href="https://www.icustoms.ai/book-a-demo/" rel="noopener noreferrer"&gt;Watch a demo&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>tss</category>
      <category>ai</category>
      <category>trade</category>
      <category>automation</category>
    </item>
    <item>
      <title>Integrating TSS Into a Freight Forwarder Tech Stack</title>
      <dc:creator>John Hall</dc:creator>
      <pubDate>Fri, 11 Sep 2026 06:55:33 +0000</pubDate>
      <link>https://dev.to/john_hall/integrating-tss-into-a-freight-forwarder-tech-stack-48fb</link>
      <guid>https://dev.to/john_hall/integrating-tss-into-a-freight-forwarder-tech-stack-48fb</guid>
      <description>&lt;h2&gt;
  
  
  What integration actually touches
&lt;/h2&gt;

&lt;p&gt;A working TSS integration for a forwarder touches four systems: the client onboarding record, the product master, the operational booking system, and the finance ledger that tracks payment routing per client.&lt;/p&gt;

&lt;h2&gt;
  
  
  Client onboarding record
&lt;/h2&gt;

&lt;p&gt;Onboarding produces the signed data specification, EORI, UKIMS position, and commercial terms. These become configuration inputs to every downstream module.&lt;/p&gt;

&lt;h2&gt;
  
  
  Product master per client
&lt;/h2&gt;

&lt;p&gt;Products belong to clients. Sharing a global master across traders is where data cross-contamination begins. This &lt;a href="https://www.icustoms.ai/blogs/tss-software-freight-forwarders/" rel="noopener noreferrer"&gt;Northern Ireland customs software&lt;/a&gt; walkthrough lists hard client data separation as the first of six multi-client software requirements.&lt;/p&gt;

&lt;h2&gt;
  
  
  Booking system as the trigger
&lt;/h2&gt;

&lt;p&gt;The booking triggers the declaration, not the other way round. Movement references cannot be built until customs data exists, so the booking system needs the declaration status back on the same record.&lt;/p&gt;

&lt;h2&gt;
  
  
  Finance ledger and payment routing
&lt;/h2&gt;

&lt;p&gt;TSS lets agents facilitate payments. Finance needs visible routing per client per declaration, so month-end reconciles without spreadsheet archaeology.&lt;/p&gt;

&lt;h2&gt;
  
  
  API vs portal, per lane
&lt;/h2&gt;

&lt;p&gt;Repeat lanes go to the API. Ad-hoc, new-client, or unusual movements go to the portal. Integration design accepts the mix rather than forcing a single channel.&lt;/p&gt;

&lt;h2&gt;
  
  
  Retention and offboarding
&lt;/h2&gt;

&lt;p&gt;Data retention arrangements when a client departs are a contract question that the integration must honour. Build the export path before it's needed.&lt;/p&gt;

&lt;p&gt;See a full-stack TSS integration walkthrough. &lt;a href="https://www.icustoms.ai/book-a-demo/" rel="noopener noreferrer"&gt;Watch a demo&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>integration</category>
      <category>tss</category>
      <category>freighttech</category>
      <category>dataarchitecture</category>
    </item>
    <item>
      <title>Integrating TSS with Your ERP: What to Get Right First</title>
      <dc:creator>John Hall</dc:creator>
      <pubDate>Thu, 10 Sep 2026 10:12:00 +0000</pubDate>
      <link>https://dev.to/john_hall/integrating-tss-with-your-erp-what-to-get-right-first-422n</link>
      <guid>https://dev.to/john_hall/integrating-tss-with-your-erp-what-to-get-right-first-422n</guid>
      <description>&lt;h2&gt;
  
  
  The integration is not one system, it is two
&lt;/h2&gt;

&lt;p&gt;A TSS API project is really an ERP-to-TSS integration. The TSS side is well documented. The ERP side is where every project spends its time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Establish the source of truth
&lt;/h2&gt;

&lt;p&gt;Product data, party data and consignment data each need one authoritative home. If the ERP does not currently own them, the integration will drift within weeks. The &lt;a href="https://www.icustoms.ai/blogs/tss-api-vs-manual/" rel="noopener noreferrer"&gt;TSS integration analysis&lt;/a&gt; puts this first for a reason.&lt;/p&gt;

&lt;h2&gt;
  
  
  Map fields to specifications
&lt;/h2&gt;

&lt;p&gt;Every TSS field needs an ERP field or a computed value. Where a computed value is used, document the logic and version-control it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Design for two-way traffic
&lt;/h2&gt;

&lt;p&gt;Submissions go out. Responses come back. Both need to update the ERP so the audit trail is complete on one side.&lt;/p&gt;

&lt;h2&gt;
  
  
  Handle exceptions without breaking the ERP flow
&lt;/h2&gt;

&lt;p&gt;Rejected submissions should not corrupt ERP records. A separate exceptions area, tied back by reference, keeps the ERP clean.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keep the portal available
&lt;/h2&gt;

&lt;p&gt;Hybrid coverage matters even after a full integration. Controlled goods, new suppliers and unusual movements often still route through the portal.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;See a TSS-to-ERP integration with hybrid portal fallback. &lt;a href="https://www.icustoms.ai/book-a-demo/" rel="noopener noreferrer"&gt;Watch a demo&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>tss</category>
      <category>erp</category>
      <category>ai</category>
      <category>integrating</category>
    </item>
    <item>
      <title>Integrating TSS Software With Your ERP, WMS and TMS</title>
      <dc:creator>John Hall</dc:creator>
      <pubDate>Wed, 09 Sep 2026 07:45:35 +0000</pubDate>
      <link>https://dev.to/john_hall/integrating-tss-software-with-your-erp-wms-and-tms-4hh1</link>
      <guid>https://dev.to/john_hall/integrating-tss-software-with-your-erp-wms-and-tms-4hh1</guid>
      <description>&lt;p&gt;Most declaration errors are data problems in disguise. The value of TSS software depends on whether it can reach the data you already hold.&lt;/p&gt;

&lt;h2&gt;
  
  
  Assess the source systems first
&lt;/h2&gt;

&lt;p&gt;Identify where party data, product data, commodity codes and shipment data actually live. Usually that is ERP for products and parties, WMS for movements and TMS for transport documents.&lt;/p&gt;

&lt;h2&gt;
  
  
  Look for real connectors, not "we can integrate"
&lt;/h2&gt;

&lt;p&gt;Ask which of your specific systems the vendor connects to today, in production, at another customer. For a working framework, see this &lt;a href="https://www.icustoms.ai/blogs/tss-automation-software/" rel="noopener noreferrer"&gt;Trader Support Service integration guide&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Handle supplier documents realistically
&lt;/h2&gt;

&lt;p&gt;Supplier invoices are the messiest input. The right tool treats OCR as a stage in the pipeline, not a magic step, and asks a human when it is not sure.&lt;/p&gt;

&lt;h2&gt;
  
  
  Own the mapping
&lt;/h2&gt;

&lt;p&gt;Data mapping is usually a bigger cost than the licence. Budget for it.&lt;/p&gt;

&lt;p&gt;Map iCustoms against your current stack. &lt;a href="https://www.icustoms.ai/book-a-demo/" rel="noopener noreferrer"&gt;Watch a demo&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>tss</category>
      <category>erp</category>
      <category>integration</category>
      <category>wms</category>
    </item>
    <item>
      <title>Integrating TSS, GVMS and CDS Data in One Ops View</title>
      <dc:creator>John Hall</dc:creator>
      <pubDate>Tue, 08 Sep 2026 07:23:21 +0000</pubDate>
      <link>https://dev.to/john_hall/integrating-tss-gvms-and-cds-data-in-one-ops-view-ogj</link>
      <guid>https://dev.to/john_hall/integrating-tss-gvms-and-cds-data-in-one-ops-view-ogj</guid>
      <description>&lt;h2&gt;
  
  
  The integration problem
&lt;/h2&gt;

&lt;p&gt;Three systems own different parts of the movement. TSS owns the declarations and MRNs. GVMS owns the vehicle-facing GMR. CDS owns the declaration format. Ops teams need one view.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to pull from where
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;From TSS:&lt;/strong&gt; movement status, MRNs issued, declaration references, authorisation flags relevant to GMR automation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;From GVMS:&lt;/strong&gt; GMR status, check-in status, embarked status, inspection notifications.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;From CDS:&lt;/strong&gt; underlying declaration state and MRN validity.
## The join keys&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;MRNs join declarations to a GMR. Vehicle and trailer registration numbers join the physical movement to the GMR at check-in. EORI joins the trader across TSS and GVMS, and is required in the EIDR entry for XI-prefixed references.&lt;/p&gt;

&lt;p&gt;An operational view of the same joins is in this &lt;a href="https://www.icustoms.ai/blogs/tss-gvms-gmr/" rel="noopener noreferrer"&gt;TSS and GVMS integration walkthrough&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Status transitions to expose
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;gmr_built&lt;/code&gt; → &lt;code&gt;checked_in&lt;/code&gt; → &lt;code&gt;embarked&lt;/code&gt; → &lt;code&gt;inspection_status_known&lt;/code&gt;. Each transition is a notification opportunity, especially inspection status after embarkation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where the integration usually breaks
&lt;/h2&gt;

&lt;p&gt;Trailer swaps that happen outside the customs system and never make it into the GMR update flow. Design the integration to accept trailer changes as a first-class event.&lt;/p&gt;

&lt;p&gt;Bring TSS, GVMS and CDS data into one workflow. &lt;a href="https://www.icustoms.ai/book-a-demo/" rel="noopener noreferrer"&gt;Watch a demo&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>integration</category>
      <category>tss</category>
      <category>gvms</category>
      <category>ai</category>
    </item>
    <item>
      <title>Integrating ENS Filing With TMS and Customs Systems</title>
      <dc:creator>John Hall</dc:creator>
      <pubDate>Mon, 07 Sep 2026 08:15:13 +0000</pubDate>
      <link>https://dev.to/john_hall/integrating-ens-filing-with-tms-and-customs-systems-55co</link>
      <guid>https://dev.to/john_hall/integrating-ens-filing-with-tms-and-customs-systems-55co</guid>
      <description>&lt;h2&gt;
  
  
  The integration case
&lt;/h2&gt;

&lt;p&gt;ENS data lives in three systems: the TMS (transport), the customs stack (declarations), and ICS2 (safety and security). Without integration, each is rekeyed and each is a mismatch risk.&lt;/p&gt;

&lt;h3&gt;
  
  
  TMS side
&lt;/h3&gt;

&lt;p&gt;Pull booking, mode, vehicle, and routing data from the TMS into the ENS builder. Store the returned Movement Reference against the booking so it is available for port check-in. The &lt;a href="https://www.icustoms.ai/blogs/tss-ens-northern-ireland/" rel="noopener noreferrer"&gt;ENS submission requirements&lt;/a&gt; guide covers the full field set.&lt;/p&gt;

&lt;h3&gt;
  
  
  Customs side
&lt;/h3&gt;

&lt;p&gt;Under the simplified customs route, supplementary declarations auto-generate from ENS data. That means the ENS is the upstream source of truth. Bad ENS = bad supplementary.&lt;/p&gt;

&lt;h3&gt;
  
  
  ICS2 side
&lt;/h3&gt;

&lt;p&gt;Handle acknowledgements, Movement References, and rejections through structured message handling, not manual email flows. This matters most for volume lanes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Sync rules
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;One source of truth per consignment.&lt;/li&gt;
&lt;li&gt;Corrections applied upstream, cascaded down.&lt;/li&gt;
&lt;li&gt;XI EORI resolved at booking, not submission.&lt;/li&gt;
&lt;li&gt;Description library shared across TMS and customs.
### What to test&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Test rejection handling, mismatch scenarios, and correction flows before go-live, not after.&lt;/p&gt;

&lt;p&gt;Integrate ENS with the rest of your customs stack — &lt;a href="https://www.icustoms.ai/book-a-demo/" rel="noopener noreferrer"&gt;Watch a demo&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>integration</category>
      <category>tms</category>
      <category>customs</category>
      <category>api</category>
    </item>
  </channel>
</rss>
