Markdown Editor

Interface Control Document (ICD) Template

ICD between two systems – parties, requirements allocation, data element table, protocol sequence, errors, security, timing, change control

Cómo usar: Integrations between teams, vendors or organisations that need a signed contract. Fill the data element table completely (type, units, range, precision, frequency) before coding. The main pitfall is changing the interface without an approved change request.

Vista previa

Interface Control Document: [System A] to [System B] [Interface name]

Interface control document (ICD) that defines and controls one interface between two systems or subsystems: the parties, the requirements allocated to the interface, its physical and logical characteristics, data elements, protocol and sequencing, error handling, security, performance, versioning and verification. Both parties sign it and change it only through the change control process in section 12. Replace every [bracketed] value and every row marked Example.

Document control

FieldValue
Document ID[ICD-A-B-001]
Interface ID[IF-ORD-WMS-01]
Interface name[Order fulfilment interface]
Version[0.1]
Status[Draft / In review / Baselined / Superseded]
Controlling authority[Interface control working group / configuration control board]
Party A owner[@owner-a]
Party B owner[@owner-b]
Classification[Internal / Confidential]
Last updatedYYYY-MM-DD

Approvals

RoleOrganisationNameSignature / decisionDate
Party A system owner[Organisation A][@name][Approved]YYYY-MM-DD
Party B system owner[Organisation B][@name][Approved]YYYY-MM-DD
Integration lead[Organisation][@name][Approved]YYYY-MM-DD
Security officer[Organisation][@name][Approved]YYYY-MM-DD

Revision history

VersionDateAuthorChange requestChange summary
0.1YYYY-MM-DD[@name]n/aInitial draft
1.0YYYY-MM-DD[@name]n/aExample: Baselined after joint review
1.1YYYY-MM-DD[@name]Example: ICR-004Example: Added optional field deliveryWindow

Contents

1. Scope

This ICD defines the interface through which [System A, for example the Order Management System] sends fulfilment orders to [System B, for example the Warehouse Management System] and receives shipment status updates. It controls message content, transport, sequencing, error handling, security and performance. It does not cover [internal processing in either system, the user interfaces, or batch reconciliation reports].

2. Referenced documents

IDDocumentVersionRelevance
REF-01[System A requirements specification][x.y]Source of interface requirements
REF-02[System B interface specification][x.y]Endpoint behaviour
REF-03[Enterprise integration standard][x.y]Transport and naming rules
REF-04RFC 8259 (JSON) and ISO 8601 (dates and times)n/aData formats

3. Interface identification and parties

ItemParty AParty B
System name[Order Management System (OMS)][Warehouse Management System (WMS)]
Organisation / team[Commerce platform team][Logistics IT]
RoleProducer of orders, consumer of statusConsumer of orders, producer of status
Technical contact[@name, email][@name, email]
Operations contact (24/7)[On-call rotation][On-call rotation]
Environments[Test, staging, production][Test, staging, production]

Interface type: [system to system, real-time messaging]. Criticality: [High: orders not fulfilled if the interface fails].

4. Interface overview

The diagram shows the two parties, the channels and the direction of each message flow.

Message IDNameDirectionTrigger
M-01FulfilmentOrderA to BOrder paid in OMS
M-02OrderAckB to AOrder received and validated by WMS
M-03ShipmentStatusB to AStatus change in WMS (picked, packed, shipped, cancelled)

5. Requirements allocation

IDRequirementAllocated toSourceVerification
ICD-REQ-001Party A shall publish M-01 within 5 s of an order reaching status PaidAREF-01 SRS-FR-031Test
ICD-REQ-002Party B shall acknowledge each M-01 with M-02 within 30 sBREF-02Test
ICD-REQ-003Both parties shall reject messages that fail schema validation and log the rejectionA, BREF-03Test, inspection
ICD-REQ-004Party B shall process M-01 idempotently using orderId and messageIdBThis ICDTest
ICD-REQ-005Messages shall not contain payment card dataA, BSecurity policyInspection
[ICD-REQ-nnn][Requirement][A / B / A, B][Source][Test / Inspection / Analysis / Demonstration]

6. Interface characteristics

6.1 Physical characteristics

CharacteristicValue
Transport[AMQP 1.0 over TLS 1.3 to managed message broker]
Network path[Private link between VPC A and broker; WMS connects via site-to-site VPN]
Endpoints[Broker host per environment, port 5671]
Availability window[24/7; WMS maintenance Sundays 02:00 to 03:00 UTC]
Message size limit[256 KB]

6.2 Logical characteristics

CharacteristicValue
Message format[JSON, UTF-8, validated against JSON Schema draft 2020-12]
Schema location[Repository path or registry URL]
Character set[UTF-8; no byte order mark]
Date and time[ISO 8601 in UTC with Z suffix]
Delivery semantics[At least once; ordering per orderId guaranteed by partition key]
Headers[messageId (UUID v4), messageType, schemaVersion, correlationId, sentAt]

7. Message and data element definitions

7.1 M-01 FulfilmentOrder

ElementTypeUnitsRange / allowed valuesPrecisionMandatoryFrequencyDescription
orderIdStringn/aPattern ORD-[0-9]{10}n/aYesOnce per messageUnique order identifier, assigned by OMS
orderDateDate-timeUTCNot in the future1 sYesOnceTime the order was paid
warehouseCodeStringn/aDE01, DE02, NL01n/aYesOnceFulfilling warehouse
lines[].skuStringn/a8 to 14 alphanumeric charactersn/aYes1 to 200 per orderStock keeping unit
lines[].quantityIntegerPieces1 to 9991YesPer lineQuantity to ship
lines[].weightDecimalkg0.001 to 1000.0000.001 kgNoPer lineUnit gross weight
shipTo.countryCodeStringn/aISO 3166-1 alpha-2n/aYesOnceDestination country
deliveryWindow.startDate-timeUTCAfter orderDate1 minNoOnceEarliest delivery time
[element][Type][Units][Range][Precision][Yes / No][Frequency][Description]

Example message:

{
  "orderId": "ORD-0000123456",
  "orderDate": "2026-03-14T09:26:53Z",
  "warehouseCode": "DE01",
  "lines": [{"sku": "SKU12345678", "quantity": 2, "weight": 0.450}],
  "shipTo": {"countryCode": "DE"}
}

7.2 M-02 OrderAck

ElementTypeUnitsRange / allowed valuesPrecisionMandatoryFrequencyDescription
orderIdStringn/aAs M-01n/aYesOnceOrder acknowledged
resultEnumn/aACCEPTED, REJECTEDn/aYesOnceValidation outcome
reasonCodeStringn/aCodes in section 9.2n/aIf REJECTEDOnceReason for rejection
[element][Type][Units][Range][Precision][Yes / No][Frequency][Description]

7.3 M-03 ShipmentStatus

ElementTypeUnitsRange / allowed valuesPrecisionMandatoryFrequencyDescription
orderIdStringn/aAs M-01n/aYesOnceOrder concerned
statusEnumn/aPICKED, PACKED, SHIPPED, CANCELLEDn/aYesOnceNew status
statusTimeDate-timeUTCNot before orderDate1 sYesOnceTime of status change
trackingNumberStringn/aUp to 35 charactersn/aIf SHIPPEDOnceCarrier tracking number
[element][Type][Units][Range][Precision][Yes / No][Frequency][Description]

8. Protocol and sequencing

The normal sequence for one order is shown below.

RuleDescription
OrderingMessages for the same orderId are processed in send order
Acknowledgement timeoutIf no M-02 arrives within 30 s, Party A resends M-01 with the same messageId
Retry limitUp to 5 resends with exponential backoff (30 s, 60 s, 120 s, 240 s, 480 s), then alert
Status transitionsPICKED then PACKED then SHIPPED; CANCELLED allowed before SHIPPED only

9. Error handling and recovery

9.1 Error handling responsibilities

Error conditionDetected byActionNotification
Example: Schema validation failureReceiverReject, move to dead-letter queue, do not retryAlert to sender on-call
Example: Duplicate messageIdParty BDiscard silently, re-send previous M-02None
Example: Broker unavailableSenderBuffer locally up to 24 h, retryAlert after 5 minutes
Example: Unknown SKUParty BSend M-02 REJECTED with SKU_UNKNOWNParty A creates exception case
[Condition][Party][Action][Notification]

9.2 Reason codes

CodeMeaningRetryable
SCHEMA_INVALIDMessage failed schema validationNo
SKU_UNKNOWNSKU not known in the warehouseNo, after master data fix
CAPACITYWarehouse temporarily cannot accept ordersYes, after 15 minutes
[Code][Meaning][Yes / No]

9.3 Recovery

[Describe recovery after prolonged outage: replay from the broker (retention 7 days), reconciliation report comparing open orders daily at 06:00 UTC, and manual resubmission procedure with runbook link.]

10. Security

AspectControl
Authentication[Mutual TLS with certificates issued by the corporate CA; rotated yearly]
Authorisation[Party A may publish to orders.fulfilment only; Party B may publish to orders.ack and orders.status only]
Confidentiality[TLS 1.3 in transit; broker encryption at rest]
Integrity[Broker checksums; messageId uniqueness]
Data classification[Confidential: contains delivery addresses (personal data)]
Logging[Message headers logged for 90 days; bodies not logged]

11. Performance and timing

Peak message rate is derived from the peak order forecast:

rpeak=Norders/peak hour×(1+mˉstatus)3600=18 000×(1+3)3600=20 messages/sr_{peak} = \frac{N_{orders/peak\ hour} \times (1 + \bar{m}_{status})}{3600} = \frac{18\,000 \times (1 + 3)}{3600} = 20\ \text{messages/s}
ParameterValue
Average volume[40,000 orders per day]
Peak volume[18,000 orders per hour]
End-to-end latency M-01[95% within 10 s, 99.9% within 60 s]
Availability[99.9% per calendar month excluding agreed maintenance]
Throughput headroom[2x peak tested]

12. Versioning and change control

RuleDescription
Version schemeschemaVersion major.minor; major in queue name for breaking changes
Non-breaking changesAdding optional fields or enum values announced 30 days ahead; receivers ignore unknown fields
Breaking changesNew major version on new queues; old version supported for at least 6 months
Change requestInterface change request (ICR) raised by either party, assessed by both, approved by the controlling authority
ICR IDDescriptionRaised byImpactDecisionDate
Example: ICR-004Add optional deliveryWindow to M-01Party ANon-breakingApprovedYYYY-MM-DD
[ICR-nnn][Description][Party][Breaking / Non-breaking][Approved / Rejected]YYYY-MM-DD

13. Verification and test

RequirementMethodTest caseEnvironmentResultDate
ICD-REQ-001TestIT-ICD-01 publish latencyStaging[Pass / Fail]YYYY-MM-DD
ICD-REQ-002TestIT-ICD-02 acknowledgement timingStaging[Pass / Fail]YYYY-MM-DD
ICD-REQ-003TestIT-ICD-03 invalid schema rejectedStaging[Pass / Fail]YYYY-MM-DD
ICD-REQ-004TestIT-ICD-04 duplicate messageStaging[Pass / Fail]YYYY-MM-DD
ICD-REQ-005InspectionSchema reviewn/a[Pass / Fail]YYYY-MM-DD
[ICD-REQ-nnn][Method][Test case][Environment][Result]YYYY-MM-DD

Entry criteria for joint testing: [both parties deployed to staging with schema version x.y]. Exit criteria: [all requirements passed, no open severity 1 or 2 defects].

14. Signatories

By signing, each party agrees to implement and maintain its side of the interface as defined in this document and to change it only through the process in section 12.

PartyNameTitleSignatureDate
Party A[@name][System owner, OMS][Signature]YYYY-MM-DD
Party B[@name][System owner, WMS][Signature]YYYY-MM-DD
Controlling authority[@name][Chair, interface control working group][Signature]YYYY-MM-DD

15. Glossary

TermMeaning
ICDInterface control document
ICRInterface change request
PartyOne of the two systems (and their owners) on either side of the interface
Dead-letter queueQueue holding messages that could not be processed, for investigation
[Term][Meaning]

Standard and licence note

Based on common systems engineering practice for interface control documents (interface identification, requirements allocation, data element definitions, protocol, error handling, verification and joint change control). Template licence: MIT.

Plantillas relacionadas